/**
* @Author: qinhaoda
* @Description:
* @File: env
* @Version: 1.0.0
* @Date: 2022/12/16 12:06
 */
package dataobj

type CheckInfo struct {
	Checkid     int64  `json:"checkid"`
	Name        string `json:"name"`
	Checkstatus bool   `json:"checkstatus"`
	Output      string `json:"output"`
	Checktime   string `json:"time"`
}

type ServiceInfo struct {
	Checkid     int64    `json:"checkid"` //任务配置的ID
	Name        string   `json:"name"`    //服务名qfed
	Path        string   `json:"path"`    //服务名路径
	Conf        string   `json:"conf"`    //服务名路径
	Bin         string   `json:"bin"`
	Data        string   `json:"data"`        //数据路径
	Ignore      []string `json:"ignore"`      //需要忽略的路径
	Procnum     int      `json:"procnum"`     //进程数量
	Procinfo    []string `json:"procinfo"`    //ps -ef
	Md5         string   `json:"md5"`         //进程的MD5 bin/merger
	Version     string   `json:"version"`     //进程版本，
	Changenum   int      `json:"changenum"`   //md5diff 变化数量
	Port        []int    `json:"port"`        //端口号， 脚本检查端口在不在 ,进程在不在-》checkstatus =true/false
	Checkstatus bool     `json:"checkstatus"` //true false
	Output      string   `json:"output"`
	Checktime   string   `json:"time"` //发生时间
	AgentUrl    string   `json:"agent_url,omitempty"`
	Level       int      `json:"level"`
}

type CronInfo struct {
	User string `json:"user"`
	Info string `json:"info"`
}

type Environment struct {
	HostName       string                 `json:"hostname"`
	Node           []string               `json:"node"`
	Team           []string               `json:"team"`
	Basic          map[string]interface{} `json:"basic"`
	Util           map[string]float64     `json:"util"`
	GeneralCheck   []CheckInfo            `json:"generalcheck"`
	PersonalCheck  []CheckInfo            `json:"personalcheck"`
	Service        []ServiceInfo          `json:"Service"`
	Cron           []CronInfo             `json:"cron"`
	MachineStatus  int                    `json:"machinestatus"`
	GeneralStatus  int                    `json:"initialstatus"`
	PersonalStatus int                    `json:"personalstatus"`
	ServiceStatus  int                    `json:"servicestatus"`
	CronNum        int                    `json:"cronnum"`
	Labels         map[string]interface{} `json:"labels"`
}

type Watcher struct {
	Hostname  string    `json:"hostname"`
	EventPath string    `json:"event_path"`
	EventKind string    `json:"event_kind"`
	FileInfo  *FileInfo `json:"file_info"`
	LogLevel  string    `json:"log_level"`
	EventTime string    `json:"event_time"`
	Desc      string    `json:"desc"`
}

type FileInfo struct {
	Kind       string `json:"kind"`
	LinkExpand string `json:"link_expand"`
	Permission string `json:"permission"`
	Atime      string `json:"atime"`
	Ctime      string `json:"ctime"`
	Mtime      string `json:"mtime"`
	User       string `json:"user"`
	Group      string `json:"group"`
}

type EventInfo struct {
	Hostname  string   `json:"hostname"`
	Node      []string `json:"node"`
	IP        string   `json:"ip"`
	Level     string   `json:"level"`
	Info      string   `json:"info"`
	Checktime string   `json:"@timestamp"`
}
